今天來介紹另一款 Linux 逆向工具,我主要拿來動態分析使用。
Wiki
GNU偵錯器(英語:GNU Debugger,縮寫:GDB),是GNU軟體系統中的標準偵錯器,此外GDB也是個具有移攜性的偵錯器,經過移攜需求的調修與重新編譯,如今許多的類UNIX作業系統上都可以使用GDB,而現有GDB所能支援除錯的程式語言有C、C++、Pascal以及FORTRAN
上述是原生的 GDB ,若想要顯示更多資訊的話,建議安裝 GDB-PEDA
安裝 GDB-PEDA
PEDA - Python Exploit Development Assistance for GDB
若要執行 GDB,在 terminal 下指令:gdb ./binary
其結果如下:
若要顯示該程式使用到的函式,在 terminal 下指令:info func
其結果如下:
若要轉成組合語言,在 terminal 下指令:disassemble main
其結果如下:
較常用的指令
b *記憶體位址 -> 用來設置斷點(break point)
ni -> 下一個指令(不會追進去函式裡面)
si -> 下一個指令(追進去函式裡面)
c -> 執行到斷點的地方
r -> run(開始執行程式)
小密技:按 enter 會使用上一個使用的指令,所以不用一直按
舉例如下,在 terminal 下指令b main
, r
後,可得結果如下圖:
這裡就能體現使用 GDB - PEDA 的價值!因為你可以一覽無遺的(依序由上而下)看到 registers, code, stack。這些資訊在動態追蹤的時候大有幫助(當然,若沒有安裝,可以下指令 info stack
, info registers
得到相對應的結果,缺點就是你要另外再下指令 )
再來就是一些顯示的指令:x/[大小][格式]
(x 代表 examine)
舉例來說,印出 0x7fffffffe590 裡的內容(結果如下):
今天介紹 Linux 的動態追蹤逆向工具,明天接著介紹專屬 Mac 的逆向工具!